package br.unisal.repository;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;

import br.unisal.domain.Produto;
import br.unisal.reader.LeitorXML;

public class ProdutoRepository {
	private HashMap<Integer, Produto> produtos = new HashMap<Integer, Produto>();
	private List<Produto> produtosDisponiveis = new ArrayList<Produto>();
	
	public ProdutoRepository() {

//		Produto item1 = new Produto(1, "frango", 1, "borda recheada", 30.00, true);
//		Produto item2 = new Produto(2, "aliche", 1, "borda recheada", 30.00, true);
//		Produto item3 = new Produto(3, "marguerita", 1, "borda recheada", 30.00, true);
//		Produto item4 = new Produto(4, "pepperoni", 1, "borda recheada", 30.00, true);
//		Produto item5 = new Produto(5, "lombo", 1, "borda recheada", 30.00, true);
//		Produto item6 = new Produto(6, "peito de peru", 1, "borda recheada", 30.00, false);
//
//		Produto item7 = new Produto(7, "coca cola", 2, "lata", 3.0, true);
//		Produto item8 = new Produto(8, "guarana", 2, "lata", 3.0, true);
//		
//		Produto item9 = new Produto(10, "Cerveja original", 3, "lata", 3.0, true);
//
//		produtos.put(item1.getCodigo(), item1);
//		produtos.put(item2.getCodigo(), item2);
//		produtos.put(item3.getCodigo(), item3);
//		produtos.put(item4.getCodigo(), item4);
//		produtos.put(item5.getCodigo(), item5);
//		produtos.put(item6.getCodigo(), item6);
//		produtos.put(item7.getCodigo(), item7);
//		produtos.put(item8.getCodigo(), item8);
//		produtos.put(item9.getCodigo(), item9);
		
		this.produtos = new LeitorXML().leProdutos();
	}
	
	public void adicionaNovoProduto(Produto item) {
		produtos.put(item.getCodigo(), item);
	}

	public Produto getProdutoPeloCodigo(Integer codigo) {
		return produtos.get(codigo);
	}

	public HashMap<Integer, Produto> getProdutos() {
		return produtos;
	}

	public void excluiProduto(Produto produto) {
		produtos.remove(produto.getCodigo());
	}
	
	public Boolean validaCodigo(Integer codigo){
		return produtos.containsKey(codigo);
	}
	
	public Produto[] retornaProdutosDisponiveisEmArray() {
		Collection<Produto> values = produtos.values();
		for (Produto produto : values){
			if (produto.getDisponivel()) produtosDisponiveis.add(produto);
		}
		 Produto[] array = (Produto[]) produtosDisponiveis.toArray(new Produto[produtosDisponiveis.size()]);
		 return array;
	}
	
	public Produto[] retornaTodosProdutosEmArray() {
		Collection<Produto> values = produtos.values();
		Produto[] array = (Produto[]) values.toArray(new Produto[values.size()]);
		return array;
	}
	
}